package com.atguigu.rabbitmq.eight;

import com.atguigu.rabbitmq.utils.RabbitMqUtils;
import com.rabbitmq.client.CancelCallback;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;

import java.io.IOException;
import java.util.HashMap;
import java.util.concurrent.TimeoutException;

/*
* 消费者
* 这里对死信队列进行演示，C1
* 也就是消息传递给正常交换机，正常队列，如果一切正常，直接传递给C1
* 如果在正常队列那里出现了问题，将消息传递给死信交换机，死信交换机给死信队列，
* 死信队列里面的数据由C2读取
* */
public class Consumer02 {

    /*死信队列的名称*/
    public static final String DEAD_QUEUE="dead_queue";


    public static void main(String[] args) throws IOException, TimeoutException {
        /*通过connection创建一个channel*/
        Channel channel = RabbitMqUtils.getChannel();
        System.out.println("等待接收消息.....");
        /*接收消息成功的回调函数*/
        DeliverCallback deliverCallback=(consumerTag,message)->{
            System.out.println("Consumer02_接收的消息是："+new String(message.getBody(),"UTF-8"));
        };

        /*消息接收失败的回调函数*/
        CancelCallback cancelCallback=consumerTag->{
            System.out.println("消息消费失败~");
        };

        /*消费消息*/
        /*第二个参数是否自动确认*/
        channel.basicConsume(DEAD_QUEUE, true, deliverCallback, cancelCallback);

    }

}















